# -*- coding:utf8 -*-
from django.db import models
from django.utils import timezone

from wanpuzzle.models.base import BaseModel
from wanpuzzle.models.common import Subject

__author__ = 'Forcs'


class BengProgram(BaseModel):
    """
    记录节目基本信息
    """
    title = models.CharField(max_length=30, null=False, default='')  # 标题
    media = models.URLField(null=False, default='')  # 节目视频地址
    bgm = models.URLField(null=False, default='')  # 背景音乐地址
    cover_n_hd = models.CharField(max_length=32, null=False, default='')  # 720p默认状态封面标识
    cover_h_fg_hd = models.CharField(max_length=32, null=False, default='')  # 720p高亮状态封面前景图片标识
    cover_h_bg_hd = models.CharField(max_length=32, null=False, default='')  # 720p高亮状态封面背景图片标识
    cover_n_fhd = models.CharField(max_length=32, null=False, default='')  # 1080p默认状态封面标识
    cover_h_fg_fhd = models.CharField(max_length=32, null=False, default='')  # 1080p高亮状态封面前景图片标识
    cover_h_bg_fhd = models.CharField(max_length=32, null=False, default='')  # 1080p高亮状态封面背景图片标识
    token = models.CharField(max_length=32, null=False, default='', unique=True)  # 节目标识，唯一
    publish_datetime = models.DateTimeField(default=timezone.now)  # 发布时间
    subject = models.ForeignKey(Subject, related_name='subject', null=True)  # 如果是付费节目，字段值为产品包编码
 #   subject_code = models.CharField(max_length=5, null=False, default='')  # 如果是付费节目,这个字段的值为产品包编码
    is_invalid = models.BooleanField(null=False, default=False)  # 是否删除
    rating_need = models.PositiveSmallIntegerField(null=False, default=0)  # 需要的星星数
    need_pay = models.BooleanField(null=False, default=False)  # 是否需要购买


class BengUserData(BaseModel):
    """
    记录用户数据
    """
    stb_id = models.CharField(max_length=64, null=False, default='', unique=True)  # stb设备id
    rating_total = models.PositiveIntegerField(null=False, default=0)  # 星星总个数
    wx_user_id = models.CharField(max_length=256, null=False, default='')  # 用户微信id
    wx_nickname = models.CharField(max_length=30, null=False, default='')  # 用户昵称
    wx_avatar = models.URLField(null=True)  # 微信头像地址
    unlock_programs = models.TextField(null=False, default='')  # 已经解锁的项目标识，以“,"分割
    payed_programs = models.TextField(null=False, default='0000')  # 已经购买的项目，项目之间以","分割,token与截止日期


class BengProgramUserData(BaseModel):
    """
    节目用户信息，记录用户星星个数，是否收藏
    """
    rating = models.PositiveSmallIntegerField(null=False, default=0)  # 星星个数
    is_collected = models.BooleanField(null=False, default=False)  # 是否收藏
    program = models.ForeignKey(BengProgram, related_name='program', null=True)  # 节目信息
    user_data = models.ForeignKey(BengUserData, related_name='user_data', null=True)  # 用户
    date_last = models.DateTimeField(null=False, auto_now=True)  # 最近时间


class BengVersion(BaseModel):
    """
    资源包
    """
    md5 = models.CharField(max_length=64, null=False, default='')  # md5版本号
    sha1 = models.CharField(max_length=64, null=False, default='')  # sha1版本号
    date_added = models.DateTimeField(null=False, auto_now_add=True)  # 资源包添加时间


class BengResource(BaseModel):
    """
    资源信息
    """
    name = models.CharField(max_length=32, null=False, default='')  # 名称
    token = models.CharField(max_length=32, null=False, default='', unique=True)  # 资源标识
    date_added = models.DateTimeField(null=False, auto_now_add=True)  # 添加时间
    local_path = models.CharField(max_length=200, null=False, default='')  # 本地路径
    program_token = models.CharField(max_length=32, null=False, default='')  # 节目标识


class BengPackage(BaseModel):
    """
    节目包
    """
    token = models.CharField(max_length=32, null=False, default='')  # 标识
    program_token = models.CharField(max_length=32, null=False, default='')  # 节目标识
    date_added = models.DateTimeField(null=False, auto_now_add=True)  # 添加时间
    date_last = models.DateTimeField(null=False, auto_now=True)  # 更新时间
    url = models.URLField(null=False, default='')  # 节目包地址


class BengShared(BaseModel):
    """
    宝宝空间分享
    """
    media_id = models.IntegerField(null=False, default=0)  # 分享资源的id
    media_url = models.URLField(null=False, default='')  # 分享资源的地址
    media_type = models.CharField(max_length=10, null=False, default='')  # 分享资源的类型
    cover_url = models.URLField(null=False, default='')  # 分享资源的封面地址
    pub_wx_user_id = models.CharField(max_length=128, null=False, default='')  # 发布人的微信用户id
    pub_wx_avatar = models.URLField(null=False, default='')  # 发布人的微信用户头像地址
    pub_wx_nickname = models.CharField(max_length=40, null=False, default='')  # 发布人的微信用户昵称
    stb = models.CharField(max_length=64, null=False, default='')  # 设备id
    publish_date = models.CharField(max_length=20, null=False, default='')  # 分享的时间
    date_added = models.DateTimeField(null=False, auto_now_add=True)  # 分享时间
    is_invalid = models.BooleanField(default=False)  # 是否有效标志位
    shd_wx_user_id = models.CharField(max_length=128, null=False, default='--')  # 分享人的微信用户id
    shd_wx_avatar = models.URLField(null=False, default='--')  # 分享人的微信用户头像地址
    shd_wx_nickname = models.CharField(max_length=40, null=False, default='--')  # 分享人的微信用户昵称
    like_num = models.IntegerField(null=True, default=0)  # 点赞数
    status = models.PositiveSmallIntegerField(null=False, default=0)  # 0为正常，1为活动


class BengSharedLike(BaseModel):
    """
    蹦蹦跳分享节目点赞数
    """
    user_like = models.ForeignKey(BengUserData, related_name='user_like', null=False)  # 用户
    media_like = models.ForeignKey(BengShared, related_name='media_like', null=False)  # 分享的节目


class BengActivityLike(BaseModel):
    """"
    蹦蹦跳活动节目点赞数
    """
    activity_user = models.ForeignKey(BengUserData, related_name='activity_user', null=False)  # 参与活动的用户
    activity_likenum = models.IntegerField(default=0, null=False)  # 用户点赞数
    activity_time = models.CharField(max_length=10, null=False, default='')  # 活动时间


class BengActivity(BaseModel):
    """
    蹦蹦跳活动配置
    """
    activity_name = models.CharField(max_length=20, null=False, default='')  # 活动名称
    activity_url = models.CharField(max_length=100,null=False, default='')  # 活动链接
    activity_img = models.CharField(max_length=100, null=False, default='')  # 活动图片链接
    activity_photoFrame = models.CharField(max_length=100, null=False, default='')  # 活动相框
    activity = models.BooleanField(null=False, default=False)  # 是否开始活动
    activityTimes = models.IntegerField(null=False, default=0)  # 活动访问次数
    # date_last = models.DateTimeField(null=False, default=)  # 最近时间
